package pikasial.fs;

import java.io.File;
import java.io.IOException;

/**
 * Représentation d'un fichier dans le système de fichier de Pikasial.
 * <p>
 * Cette classe représente un fichier présent dans le système de fichiers
 * de Pikasial.
 *
 * @author ESIAL - Groupe 14
 */
public class Fichier extends FSElement {

    /**
     * Crée une instance de fichier à partir du chemin
     * abstrait spécifié en paramètre.
     *
     * @param f - chemin abstrait vers le fichier
     */
    public Fichier(final File f) {
        super(f);
    }

    /**
     * Teste si le fichier est un fichier d'image.
     * <p>
     * On se base sur l'extension du fichier, pour determiner si c'est
     * une image jpeg, bmp, gif ou png.
     * @return true si le fichier est une image, false sinon
     * @see pikasial.fs.ImageFilter
     */
    @Override
    public boolean containsImage() {
        return new ImageFilter().accept(file);
    }

    /**
     * Ce n'est pas un dossier, puisque c'est un fichier.
     * @return faux;
     */
    @Override
    public final boolean isDirectory() {
        return false;
    }

    public void moveFileTo(File f) throws IOException,SecurityException {
    	f.createNewFile();
    	java.io.FileInputStream input = new java.io.FileInputStream(getJavaFile());
    	java.io.FileOutputStream output = new java.io.FileOutputStream(f);

    	byte buffer[]=new byte[512*1024];
    	int nbLecture;

    	while( (nbLecture = input.read(buffer)) != -1 ) {
    		output.write(buffer, 0, nbLecture);
    	}
    }
}
